﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Configuration;
using System.Diagnostics;

namespace EntitiesLayer
{
    public static class Configuracion
    {
        //Ubicacion de la generacion de logs locales
        public static string ubicacionLogs { get { return ConfigurationManager.AppSettings["ubicacionLogs"].ToString(); }  }

        //Tamaño máximo de archivos de log
            public static int tamanoMaximoLogsBytes { get {return Convert.ToInt32(ConfigurationManager.AppSettings["tamanoMaximoBytesLogs"].ToString());}   }

        //Dominio de InfoImage
            public static string dominioIIF { get { return ConfigurationManager.AppSettings["dominioIIF"].ToString(); }  }

        //Usuario de InfoImage
            public static string usuarioIIF { get { return ConfigurationManager.AppSettings["usuarioIIF"].ToString(); }  }

        //Password para el usuario de InfoImage
            public static string passwordIIF { get { return ConfigurationManager.AppSettings["passwordIIF"].ToString(); }  }

        //Cola a la que se enviarán los workitems
            public static string colaEnvioIIF { get { return ConfigurationManager.AppSettings["colaEnvioIIF"].ToString(); }  }

        //Horario de ejecucion de los servicios
            public static string[] horarioEjecucion { get { return ConfigurationManager.AppSettings["horarioEjecucion"].ToString().Split(';'); }  }

        //Cadena de Conexión a base de datos de InfoImage
            public static string cadenaConexionBDIIF { get { return ConfigurationManager.AppSettings["cadenaConexionBDIIF"].ToString(); }  }

        //Cadena de Conexión a base de datos que almacena los datos de los cheques
            public static string cadenaConexionBDData { get { return ConfigurationManager.AppSettings["cadenaConexionBDData"].ToString(); } }

        //ID del sistema
            public static string identificacionSistema { get { return ConfigurationManager.AppSettings["identificacionSistema"].ToString(); }  }

        //Ubicacion de la estructura de directorios de los archivos planos con los datos de los cheques
            public static string rutaArchivosData { get { return ConfigurationManager.AppSettings["rutaArchivosData"].ToString(); }  }

        //Ubicacion de la estructura de directorios de las imagenes de los cheques
            public static string rutaImagenes { get { return ConfigurationManager.AppSettings["rutaImagenes"].ToString(); }  }

        //Ubicacion de los archivos data que no fueron cargados correctamente a la tabla de datos
            public static string rutaArchivosNoCargados { get { return ConfigurationManager.AppSettings["rutaArchivosNoCargados"].ToString(); }  }

        //Retraso de monitoreo de los servicios en minutos
            public static int minutosRetraso { get { return Convert.ToInt32(ConfigurationManager.AppSettings["minutosRetrasoEjecucion"].ToString()); }  }

        //Categorias que no requieren del uso de imagenes
            public static string[] CategoriasSinImagenes { get { return ConfigurationManager.AppSettings["categoriasSinImagenes"].Split('.'); } }

        //Cantidad de días que se mantendrán los archivos de datos e imagenes en el filesystem de la maquina
            public static int diasValidez { get { return Convert.ToInt32(ConfigurationManager.AppSettings["diasValidezDatosImagenes"].ToString()); }  }

        //Ruta de archivo de parametros
            public static string archivoParametrosCheques { get { return ConfigurationManager.AppSettings["rutaArchivoParametros"].ToString(); }  }

        //Ruta donde se moveran los archivos cargados correctamente
            public static string rutaArchivosCargados { get { return ConfigurationManager.AppSettings["rutaArchivosCargados"].ToString(); }  }

            public static string campoNombre { get { return ConfigurationManager.AppSettings["campoNombre"].ToString(); }  }
            public static string campoDescripcion { get { return ConfigurationManager.AppSettings["campoDescripcion"].ToString(); }  }
            public static string campoCategoria { get { return ConfigurationManager.AppSettings["campoCategoria"].ToString(); }  }
            public static string campoFecha { get { return ConfigurationManager.AppSettings["campoFecha"].ToString(); }  }
            public static string campoDocumento { get { return ConfigurationManager.AppSettings["campoDocumento"].ToString(); }  }
            public static string campoCliente { get { return ConfigurationManager.AppSettings["campoCliente"].ToString(); }  }
        
         //parametros de cheques
            public static BatchImporter_Fields parametrizacionCampos { get { return BatchImporter_Fields.Deserializar<BatchImporter_Fields>(Configuracion.archivoParametrosCheques); }  }

            public static int numeroReintentos { get { return Convert.ToInt32(ConfigurationManager.AppSettings["numeroReintentos"].ToString()); }  }

            public static string[] listaEmails { get { return ConfigurationManager.AppSettings["direccionesEmail"].ToString().Split(','); }  }

            public static bool imagenesComoImports { get { return Boolean.Parse(ConfigurationManager.AppSettings["enviarImagenesComoImports"].ToString()); }  }

            public static bool eliminarDeBD { get { return Boolean.Parse(ConfigurationManager.AppSettings["eliminarDeBaseDatos"].ToString()); }  }

            public static bool eliminarData { get { return Boolean.Parse(ConfigurationManager.AppSettings["eliminarArchivoData"].ToString()); }  }

            public static bool eliminarImagenes { get { return Boolean.Parse(ConfigurationManager.AppSettings["eliminarImagenes"].ToString()); }  }

            public static bool mensajeInformacion { get { return Boolean.Parse(ConfigurationManager.AppSettings["activarMensajesInformacion"].ToString()); }  }
            public static bool mensajeError { get { return Boolean.Parse(ConfigurationManager.AppSettings["activarMensajesError"].ToString()); }  }
            public static bool mensajeLog { get { return Boolean.Parse(ConfigurationManager.AppSettings["activarMensajesLog"].ToString()); }  }
            public static bool mensajeProceso { get { return Boolean.Parse(ConfigurationManager.AppSettings["activarMensajesProceso"].ToString()); }  }
            public static bool registrarLogFileSystem { get { return Boolean.Parse(ConfigurationManager.AppSettings["activarLogsFileSystem"].ToString()); }  }


            public static bool usarImpersonalizacionIIF { get { return Boolean.Parse(ConfigurationManager.AppSettings["activarImpersonalizacionUsuarioIIF"].ToString()); } }

            //Dominio Windows
            public static string dominioWindows { get { return ConfigurationManager.AppSettings["dominioWindows"].ToString(); } }
    }
}
